package cn.iocoder.yudao.module.resource.service.keyword;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.resource.controller.admin.keyword.vo.KeyWordPageReqVO;
import cn.iocoder.yudao.module.resource.controller.admin.keyword.vo.KeyWordSaveReqVO;
import cn.iocoder.yudao.module.resource.dal.dataobject.keyword.KeyWordDO;
import jakarta.validation.Valid;

import java.util.Collection;
import java.util.List;

/**
 * 关键字 Service 接口
 *
 * @author 芋道源码
 */
public interface KeyWordService {

    /**
     * 创建关键字
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createKeyWord(@Valid KeyWordSaveReqVO createReqVO);

    void checkKeyWordExist(List<Integer> idList);

    /**
     * 更新关键字
     *
     * @param updateReqVO 更新信息
     */
    void updateKeyWord(@Valid KeyWordSaveReqVO updateReqVO);

    /**
     * 删除关键字
     *
     * @param id 编号
     */
    void deleteKeyWord(Integer id);

    /**
     * 获得关键字
     *
     * @param id 编号
     * @return 关键字
     */
    KeyWordDO getKeyWord(Integer id);

    List<KeyWordDO> getKeywordListByIds(Collection<Integer> ids);

    /**
     * 获得关键字分页
     *
     * @param pageReqVO 分页查询
     * @return 关键字分页
     */
    PageResult<KeyWordDO> getKeyWordPage(KeyWordPageReqVO pageReqVO);

    List<KeyWordDO> getKeyWordList(List<Integer> keywordIdList);

    List<KeyWordDO> getKeywordListByNames(List<String> names);

    /**
     * 从一段文本中，查找匹配到的关键字信息
     *
     * @param text
     * @return
     */
    List<String> getKeywordListByText(String text);

    /**
     * 根据关键字id查询对应的关键字
     *
     * @param ids
     * @return
     */
    List<String> getKeyWordListByIds(Collection<Integer> ids);

}